export default class Base64Util {
    // 编码函数，支持Unicode字符串
    static encode(str) {
        // 将字符串转换为UTF-8字节序列，然后使用btoa进行Base64编码
        return btoa(
            encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {
                return String.fromCharCode('0x' + p1)
            })
        )
    }

    // 解码函数
    static decode(str) {
        // 使用atob进行Base64解码，然后将结果从UTF-8字节序列转换回字符串
        return decodeURIComponent(
            atob(str)
                .split('')
                .map(function (c) {
                    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
                })
                .join('')
        )
    }
}
